﻿using System;
using System.Collections.Generic;

namespace Inovout
{
    public static class DefaultValue
    {
        private static readonly IDictionary<Type, object> defaultValues;
        static DefaultValue()
        {
            defaultValues = new Dictionary<Type, object>();
            defaultValues.Add(typeof(Guid), default(Guid));
            defaultValues.Add(typeof(byte), default(byte));
            defaultValues.Add(typeof(bool), default(bool));
            defaultValues.Add(typeof(int), default(int));
            defaultValues.Add(typeof(float), default(float));
            defaultValues.Add(typeof(double), default(double));
            defaultValues.Add(typeof(decimal), default(decimal));
            defaultValues.Add(typeof(string), default(string));
            defaultValues.Add(typeof(DateTime), default(DateTime));
        }

        public static bool Is(dynamic value)
        {
            if (value == null)
            {
                return true;
            }
            Type valueType = value.GetType() as Type;
            if (valueType.IsValueType)
            {
                return value.Equals(defaultValues[valueType]);
            }
            return false;
        }
    }
}
